package com.southgis.ibase.sql.config;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataSourceDefineTemplate
{
	/** 数据源类型名，与{@link com.alibaba.druid.util.JdbcConstants}定义名保持一致。
	 * 不能为空
	 */
	String type="";
	
//	/**
//	 * 定义模板的标题名，如果为空，则使用type代替
//	 */
//	String title="";
//	public String getTitle()
//	{
//		return CheckUtil.isNullorEmpty(title)?type:title;
//	}
	
	/**
	 * 对应的驱动类名
	 */
	String driverClassName;
	/**
	 * 对应的连接串格式，其中包含占位符：
	 * {host}，指服务地址
	 * {port}，指服务端口号
	 * {database}，指库名（或实例名、服务名，不同数据源定义不一样）
	 */
	String url;
	/**
	 * 数据源的方言类，主要提供给Hibernate使用
	 */
	String dialect;
	/**
	 * 生成原生sql的处理类，主要提供给DatabaseFunc使用（实现IExclusiveDatabaseFunc接口的类），
	 * 如果没有指定，而生成sql又需要时，使用最通用的语法
	 */
	String funcClassName;
	
	/**
	 * 基于当前数据库类型生成连接串
	 * @param host 地址
	 * @param port 端口
	 * @param dbName 数据库名
	 * @return 当数据库连接串
	 */
	public String formatUrl(String host,String port,String dbName)
	{
		return getUrl()
				.replace("{host}", host)
				.replace("{port}", port)
				.replace("{database}", dbName);
	}

}
